package 链表;

public class JZ24反转链表 {

    /**
     * 定义一个函数，输入一个链表的头节点，反转该链表并输出反转后链表的头节点。
     *
     * 示例:
     * 输入: 1->2->3->4->5->NULL
     * 输出: 5->4->3->2->1->NULL
     *  
     * 限制：
     * 0 <= 节点个数 <= 5000
     */

    public ListNode reverseList(ListNode head) {

        ListNode last=null;
        ListNode cur=head;
        ListNode temp=null;

        while (cur!=null){

            temp=cur.next;

            cur.next=last;

            last=cur;

            cur=temp;

        }

        return last;
    }

    public static void main(String[] args) {
        new Thread(()->{
            try {
                System.out.println("先行");
                Thread.sleep(2000);
                System.out.println("你好");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();
        System.out.println("后面");

        //JVM关闭钩子:JVM关闭时会运行
        Runtime.getRuntime().addShutdownHook(new Thread(()->{
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("JVM即将关闭");
        }));
        System.exit(0);
    }

}
